home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 3 / PC-Elektro-3-cd1.bin / KBan 2.0 / KBANSRC.LZH / SRC / PROG / KBANDATA / COMPELEM.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-22  |  1.2 KB  |  46 lines

  1. /*
  2.  * the class COMPONENT_ELEMENT
  3.  * Copyright (C) 1996, 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
  4.  */
  5.  
  6. #include "../finfo.h"
  7. #include "../kbandef.h"
  8.  
  9. #include "compelem.h"
  10.  
  11. void COMPONENT_ELEMENT::shift(const XY& ac_dif, COMPONENT_ELEMENT& target) const
  12. {
  13.   target = *this;
  14.   target.set_ac(target.ac() + ac_dif);
  15. }
  16.  
  17. bool COMPONENT_ELEMENT::is_in_block(const XY& ac1, const XY& ac2) const
  18. {
  19.   XY ac_max = get_max();
  20.   XY ac_min = get_min();
  21.   XY ac_p1(ac_max.x(), ac_max.y());
  22.   XY ac_p2(ac_max.x(), ac_min.y());
  23.   XY ac_p3(ac_min.x(), ac_max.y());
  24.   XY ac_p4(ac_min.x(), ac_min.y());
  25.   bool rv1 = ac_p1.is_in_box(ac1, ac2);
  26.   bool rv2 = ac_p2.is_in_box(ac1, ac2);
  27.   bool rv3 = ac_p3.is_in_box(ac1, ac2);
  28.   bool rv4 = ac_p4.is_in_box(ac1, ac2);
  29.   return (rv1 || rv2 || rv3 || rv4);
  30. }
  31.  
  32. int COMPONENT_ELEMENT::load_170(FILE_NEW& fp)
  33. {
  34.   char str[1024];
  35.   fp.gets_wo_return(str, 1024);
  36.   XYT x, y;
  37.   sscanf(str, "%d %d", &x, &y);
  38.   x = x * 25400 / 300;
  39.   y = y * 25400 / 300;
  40.   set_ac(XY(x, Y_V1TOV2 - y));
  41.   fp.gets_wo_return(m_component_name, 1024);
  42.   fp.gets_wo_return(m_designator    , 1024);
  43.   load_component_170(fp);
  44.   return true;
  45. }
  46.